# -*- coding: utf-8 -*-
#数据规约及属性构造
import pandas as pd
import numpy as np

datafile = '../tmp/data_decrease.xlsx'
data = pd.read_excel(datafile,encoding = 'utf-8')
 
data['L1'] = pd.to_datetime(data['LOAD_TIME']) - pd.to_datetime(data['FFP_DATE'])# 以纳秒为单位
# data['L3'] = data['L1'].astype('int64')/10**10/8640/30 # 此方法假定每个月是30天，这方法不准确
data['L3'] = data['L1']/np.timedelta64(1, 'M') # 将间隔时间转成月份为单位，注意，此处必须加一个中间变量 （****）
# 将表中的浮点类型保留至小数点后四为
# f = lambda x:'%.2f' % x
# data[['L3']]  = data[['L3']].applymap(f) # or data['L3'] = data['L3'].apply(f)
# data[['L3']]  = data[['L3']].astype('float64')# 注意:使用apply或applymap后，数据类型变成Object,若后续有需要需要在此进行类型转换
 
data["L3"] = data["L3"].round(2) # 等价于上面三句话，数据类型不变
data['LAST_TO_END'] = (data['LAST_TO_END']/30).round(2) # 此方法假定每个月是30天，这方法不够准确
data['avg_discount'] = data['avg_discount'].round(2)
 
data.drop('L1', axis=1, inplace =True) # 删除中间变量
data.drop(data.columns[:3], axis=1, inplace =True) # 去掉不需要的u'LOAD_TIME', u'FFP_DATE'
data.rename(columns={'LAST_TO_END':'R','FLIGHT_COUNT':'F','SEG_KM_SUM':'M','avg_discount':'C','L3':'L'},inplace=True)
data.to_excel('../tmp/data_rule.xlsx',index=False)

def f(x):
    return pd.Series([x.min(),x.max()], index=['min','max'])
d = data.apply(f)
d.to_excel('../tmp/data_summary.xlsx')

